#pragma GCC optimize(2)
#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int N=1010;
ll a[N];
ll b[N];
ll k,n;
int check(int x)
{
	int f=0;
	for(int i=1;i<n;i++)
	{
		ll k1=k;
		k1=k1-(x-b[i]);
		if(k1<0) continue;
		b[i]=x;
		for(int j=i+1;j<n;j++)
		{
			if(b[j]>=b[j-1]-1) 
			{
				if(k1>=0)
				{
					f=1;
					break;
				}
				continue;
			}
			k1=k1-(b[j-1]-b[j]-1);
			b[j]=b[j-1]-1;			
		}
		
		if(k1>=0 && b[n-1]<=b[n]+1) f=1;
		for(int i=1;i<=n;i++) b[i]=a[i];
		if(f) break;
	}
	return f;
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		cin>>n>>k;
		for(int i=1;i<=n;i++) cin>>a[i],b[i]=a[i];
		ll l=0,r=0;
		ll mmax=0;
		for(int i=1;i<=n;i++) 
		{
			mmax=max(mmax,a[i]);
			r=max(r,a[i]+i-1);
		}
		l=mmax;
		while(l<r)
		{
			ll mid=l+r+1>>1;

			if(check(mid)) l=mid;
			else r=mid-1;
		}
		cout<<l<<endl;
	}

	return 0;
}

